package com.pai4j.common.constants;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.HashSet;
import java.util.Set;

/**
 * 连接常量类，用于定义和管理连接相关的常量枚举
 */
public class ConnectConstants {

    /**
     * 客户端类型枚举
     */
    @Getter
    public enum ClientEnum {
        PC, MOBILE;
    }

    /**
     * 应用类型枚举
     */
    @Getter
    public enum AppEnum {
      
        WEB, WIN, MAC, IOS, ANDROID;
    }

    /**
     * 业务场景枚举，包括业务代码和业务名称
     */
    @Getter
    @AllArgsConstructor
    public enum BizEnum {
        INDEX("INDEX", "首页"),
        CHAT("CHAT", "对话");

        private String bizCode;
        private String bizName;
    }

    /**
     * 连接业务逻辑处理类
     */
    public static class ConnectBiz {

        /**
         * 获取特定客户端、应用和业务场景的业务代码
         *
         * @param client  客户端类型
         * @param app     应用类型
         * @param bizEnum 业务场景
         * @return 业务代码字符串: PC_WEB_INDEX, PC_WEB_CHAT...
         */
        public static String getBizCode(ClientEnum client, AppEnum app, BizEnum bizEnum){
            return client.name() + "_" + app.name() + "_" + bizEnum.bizCode;
        }

        /**
         * 获取所有端的某个业务场景的bizCode合集
         *
         * @param bizEnum 业务场景
         * @return 包含所有业务代码的集合
         */
        public static Set<String> getBizCode(BizEnum bizEnum){
            Set<String> bizCodes = new HashSet<>();
            for (ClientEnum client : ClientEnum.values()) {
                for (AppEnum app : AppEnum.values()) {
                    String bizCode = getBizCode(client, app, bizEnum);
                    bizCodes.add(bizCode);
                }
            }
            return bizCodes;
        }
    }
}
